SQL Azure (旧称 SQL Server Data Services 或 SQL Services) 是由微软SQL Server 2008为主,建构在Windows Azure云操作系统之上,运行云计算 (Cloud Computing)的关系数据库服务 (Database as a Service),是一种云存储(Cloud Storage)的实现,提供网络型的应用程序数据存储的服务。
基础架构
SQL Azure 服务架构
SQL Azure HA/Fabric 架构
SQL Azure的基底是SQL Server 2008,不过它是一个特殊设计的SQL Server 2008,并且以Windows Azure为基座平台,配合Windows Azure的特性,SQL Azure也是一种分散在许多实体基础架构(Physical Infrastucture)与其内部许多虚拟服务器(Virtual Servers)的一种
云存储服务,外部应用程序或服务可以不用在乎数据库实际存储在哪里,就可以利用SQL Azure显露的SQL Server Fabric
壳层服务以接受外部连接,并且在内部使用连接绕送(connection routing)的方式,让连接可以对应到正确的服务器,而且数据库是在云中由多个服务器来提供服务,每一次连接所提供服务的服务器可能会不同,因此也可以保证云存储的高度可用性(High availability)。
SQL Azure 架构在
数据中心可分为三个部份:
服务提供层 (Service Layer):
服务提供层是 SQL Azure 显露在
客户端前面的服务接口 (Facade 模式),负责接取所有向 SQL Azure 提交要求的 TDS over SSL 连接与指令,当连接进入 SQL Azure 时,SQL Azure Load Balancer 会分派连接到不同的 SQL Azure Gateway 中。SQL Azure Gateway系负责处理 TDS 连接,管理连接层安全性 (connection-level security) 以及解析指令是否有内含潜在威胁的指令,再交由连接管理员 (Connection Manager) 将连接分派到位于平台提供层内不同的 SQL Azure
数据库服务器中进行处理,SQL Azure Gateway 也会管理对 SQL Azure 的连接,以避免可能会封锁住服务器的连接 (例如过长的查询或过长的数据库交易等)。
平台提供层 (Platform Layer):
平台提供层则是以 Windows Azure Computes 的虚拟机簇 (Cluster),每台虚拟机都安装有 SQL Server 2008 以及管理一定数量的数据库,通常一份数据库会分散到三至五台的 SQL Server VM 中,而每台 SQL Server VM 也安装了 SQL Azure Fabric
中控软件,并通过 SQL Azure Fabric 与 SQL Azure Gateway 的管控下,所有对单一数据库的连接都不一定会持续连入同一台 SQL Server VM 中。SQL Server VM 内也安装了 SQL Azure Management Service,它会负责对每个数据库间的数据复写工作,以保障 SQL Azure 的基本高可用性要求。每台 SQL Server VM 内的 SQL Azure Fabric 和 Management Service 都会彼此交换健康与监控信息等,以保持整体服务的健康与可监控性。
基础建设层 (Infrastructure Layer):
基础建设层由 Windows Azure Computes 以及其高度可扩充性的运算与网络基础架构来组成,以支持 SQL Azure 所需的高可用性以及高扩充性等云特色。
作用
SQL Azure提供了一个功能强大且为人熟知的存储结构(能熟练操作SQL Server 2008/ SQL Server2008 R2 的IT从业人员都可以无障碍的操作SQL Azure),SQL Server 2008 90%的功能在SQL Azure中都得到了完美的支持,在下面的章节中,我介绍,哪些功能在SQL Azure中没有得到支持。SQL Azure兼具云计算的好处,将数据存储基础结构托管,可以大大地降低企业在IT方面的资源的投入,根据具体需要的数据存储量和网络带宽支付进行支付,即我们常说的,即付即用!
数据在企业中扮演的角色越来越重要,确保数据安全,确保数据的高可用性,也是近年来企业不断追求的目标。SQL Azure完美地保证了高可用性(High Availability)和故障转移(Failover),当应用SQL Azure进行数据的增删改的时候, SQL Azure会自动地将数据备份到若干节点(node),以保证数据的高可用性;SQL Azure后台内置的集群机制完美的保证了自动故障转移,无需人工监守。
供应模型
SQL Azure 服务对外的供应模型 (Provisioning Model) 的设计以平缓企业进入云的学习曲线为主要考量,因此 SQL Azure 对外提供的是一台逻辑服务器 (Logical Server),此服务器是由 SQL Azure Gateway 所显露,每一个 Windows Azure 的帐户都可以创建一台 SQL Azure Server,就像在本地的 SQL Server 运行个体一样,但这个运行个体是在云上运行且具有高可用性等特征的
数据库服务器。
每台 SQL Azure Server 都具有下列内容:
DNS 名称
客户端应用程序要使用这个 DNS 名称连入数据库,格式为 [serverid].database.windowsnet。
master 数据库
此数据库会存放登录信息 (logins),服务器角色以及管理服务器所必要的动态管理查看表 (Dynamic Management View)。
SQL Azure 防火墙
用来管理连入 SQL Azure Server 的连接来源。
用户数据库
每个数据库都有不同的计费标准,大小由 1GB 到 50GB 不等。一台 SQL Azure Server 可以有多个用户数据库。
客户端只要可以支持 TDS (Tabular Data Stream) over SSL,即可连接与访问 SQL Azure Server 的数据库资源,这表示像ODBC、或JDBC的 SQL Server 最新版驱动程序或SQL Native Client Library都可以连接到SQL Azure Server。
支持
作为SQL Server版本Transact-SQL的子集,不是所有的功能在SQL Azure上都有被支持,由于实体服务器架构以及安全性的问题,许多分布式的查询法以及常用的数据库复制法都没有办法被SQL Azure支持,而在SQL Server 2005开始加入的SQL CLR能力也无法在SQL Azure上支持(因为它必须要挂载在SQL Azure实体服务器上,但
客户端通常无法知道当下连到的服务器是否为有安装SQL CLR组件的那一台)。
受支持的Transact-SQL特性:
未受支持的Transact-SQL特性:
安全性
SQL Azure 的安全性有两个部分,一个是管理传输层次安全性的防火墙,一个是管理访问控制的基本安全功能。
防火墙
每个 SQL Azure Server 都会有自己的防火墙 (Firewall) 设置,管理人员可以自由设置下列不同的客户端来源模型:
SQL Azure Server 的防火墙设置会存储在 SQL Azure Gateway 中,作为管控客户端连接之用。
基本安全功能
SQL Azure Server会有两种安全组群:
1.服务器角色:有 dbmanager 以及 loginmanager 两种。
2.
数据库角色:与安装在本机或服务器上版本的SQL Server相同。
SQL Azure Server只支持使用SQL验证(SQL Authentication)的安全验证方式,以往的Windows验证在SQL Azure上不支持。而在SQL Azure Server创建时,除了master数据库以外,还会再多创建一个具有SQL Server的sa帐户相等权力的帐户,供用户操作SQL Azure Server用,此帐户称为服务器级主帐户(server-level principal),基于数据库的安全,管理人员必须要在 SQL Azure Server 中再创建一个或多个登录帐户后,再授权给数据库,客户端应用程序不宜使用服务器级主帐户来访问 SQL Azure Server 与数据库。
限制
SQL Azure 基于架构上的设计与天生的限制,SQL Azure Server的帐户与安全控制会有下列限制:
工具开发支持
开发人员或管理人员可使用 SQL Server 2008 R2 版本的 SQL Server Management Studio 连接 SQL Azure Server;Visual Studio 2010 的服务器
管理员也可以连接到 SQL Azure Server 并管理数据库与数据结构。SQL Server 2008 (非R2) 则可通过输入连接字符串的方式连接 SQL Azure Server,或是使用命令行工具 sqlcmd.exe 连到 SQL Azure Server。在 SQL Azure 管理接口中可获得连接字符串的示例。
SQL Azure Server 可接受 TDS over SSL 的通信与指令,因此开发人员可利用 ADO, ADONET, Entity Framework, LINQ to SQL 或其他可产生 TDS over SSL 的客户端库 (ex: SQL Native Client, JDBC, SQL Server Driver for PHP 等) 来访问 SQL Azure Server 与数据库。
其他服务
Globe current.svg
此条目或章节包含计划中或预期会发布的未来软件。
随着软件发布日期的临近或者更多相关可靠消息的发布,文章的内容可能大幅变动。
Nuvola apps kpager.svg
数据服务
这是在 SQL Azure 开发初期时提供的 REST API 群,在 SQL Azure 团队决定使用 TDS 协议开放 SQL Azure 数据库后即暂停开发,在 SQL Azure 服务正式发布后,这个 REST API 群即恢复开发,此 REST API 可符合 OData 协议规格,已纳入 SQL Azure Labs 环境中供开发人员测试。
SQL Azure Web Administrator
这是以 Silverlight 所开发,针对 SQL Azure 数据库所设计的联机管理工具,代号为 Houston,是在 CTP 1 的阶段,已纳入 SQL Azure Labs 环境中供开发人员测试。
安装部署
如果您的前端应用程序在Windows Azure主机上,则应将应用程序和SQL Azure数据库放置在同一机器上,这将通过减少应用程序和
数据库服务器之间的延迟来优化连接。传统上,Web服务器和数据库服务器在同一台机器上,但SQL Azure主机放置在世界上的几个数据中心。因此,从
系统配置方面看,Windows Azure的应用程序应跟SQL Azure放在相同的机器上。
正如
传统数据库通过向外扩展而不是向上扩展来处理负载应对更大、更频繁的使用。SQL Azure数据库因为资源的限制更适用于此规则。当SQL Azure发现一个数据库使用了过多的CPU和磁盘I / O时,它通过节制吞吐量来确保其他数据库不会受到影响。由于在数据库一级实施节流,可在水平或垂直方向的多个数据库中分散大量数据,通过这种方式,连接不畅的机会将会减少,任何潜在的连接不畅也只会影响一部分数据集。
此外,如果需要在两台数据库间启动SQL Azure的故障切换,小数据库可以做得更快。同样,如果你有一台只读的
数据库服务器从SQL Server得到刷新,您可以在SQL Azure中创建多个数据库使得应用程序可以循环或者随机选择访问其中哪一个数据库。这种方式,您可以在SQL Azure上分布负载并减少连接不畅的机会。
收费模式
微软针对不同SQL Azure数据库的容量有着不同的定价体系。此外,SQL Azure有两个版本:最大数据库容量为5GB的网络版,和最大数据库容量为50 GB的商业版。
网络版价格为每月49.95美元。企业版价格为每10GB每月99.99美元。如果你有一个运行在
商业版上50 GB大小的数据库,那么你将每月花费约500元。当你考虑到一个SQL Server标准版许可证每处理器需要7000美元,再加上硬件成本时,500美元可以说并不昂贵。
使用SQL Azure,你还必须为你的系统支付数据流量费用;每GB下行数据价格为0.10美元,每GB上行数据价格是0.15美元。无需付出额外的加工使用费用或者数据传输到其他SQL Azure数据库或Windows Azure系统的费用。